<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // ES5的类 

        // function Person(name,age){
        //     this.name = name;
        //     this.age = age;
        //     // this.fn = function(){
        //     //     console.log("fn");
        //     // }
        // }

        // // prototype 公共空间
        // Person.prototype.fn = function(){
        //     console.log("fn");
        // }

        // let zhangsan = new Person("张三",20);
        // let lisi  = new Person("lisi",21);
        // console.log(zhangsan.fn === lisi.fn);


        // ES6的类 ： 本质也是构造函数 ，只是提供了一种新的语法糖；

        // class Person{
        //     // constructor 函数会在 实例化的时候执行；
        //     constructor(name,age){
        //         this.name = name;
        //         this.age = age;
        //     }
        //     fn(){
        //         console.log("fn")
        //     }
        // }

        // let zhangsan = new Person("张三",20);
        // let lisi  = new Person("lisi",21);
        // // console.log(zhangsan);
        // // console.log(lisi);
        // zhangsan.fn();
        // lisi.fn();
        // console.log(typeof Person);



        // 属性的多种定义方式
        // 1.直接把属性写在外边 ，不需要this；
        // 2.支持 get 和set
        class Person{
            // name="张三";
            // age;
            constructor(){
                this.name = "张三";
                // this.age = age;
                this.myfn();
            }
            fn(){
                console.log(this.name);
            }
            myfn(){
                console.log("myfn");
            }
            get age(){
                console.log("get");
                return 20;
            }
            set age(newvalue){
                console.log("??",newvalue);
            }
        }

        let zhangsan = new Person();
        // console.log(zhangsan);
        // zhangsan.age = 30;
        zhangsan.fn();



    </script>
</body>
</html>